1. Field of the Invention
This invention relates to multiple computer systems and more specifically to distributed multiprocessor systems with the capability of dynamic self configuration.
2. Description of the Prior Art
Early computers included a single central processing unit that was either dedicated to a specific control function or a batch job processing function. In the single control function, the computer was preconfigured to perform a certain dedicated set of functions for a given task. In other words, the total computer capability was dedicated to this single task. If the task was such that not all the computer capability was required the remaining computer capability was unused. If, on the other hand, the task was such that more computer capability was required, another computer with increased capability replaced the computer with lesser capability. Batch processing, on the other hand, was used to perform several independent computational jobs. As computer technology changed and the microprocessor was introduced, computer system architecture changed. Microprocessor based systems were used to support functions that required a smaller amount of computer capability. Therefore, it became cost effective to provide computer support, based around microprocessors, for many more functions. In addition, computer architecture included many microprocesors that each served individual functions that were in turn tied together by a common system bus. Such a configuration is referred to as a multiprocessor configuration. Many multiprocessor configurations consist of individual microprocessor elements contained within individual circuit boards. Each individual circuit board is plugged into a configuration including the system bus to enable communication between the module boards. This configuration is often referred to as the "motherboard". The motherboard only consists of connectors to mate to the individual microprocessor modules and wires to provide communication between connectors.
In order to construct a system of multiprocessor boards, the whole system must be designed and conceived in the beginning. In other words, the system designer must be aware of all of the individual parts and detailed requirements. The designer then must develop software using hardware development tools in order to put the system together. Therefore the market for such a system is strictly limited. The invention herein described allows for the standard packaging of complex, real time, intelligent functions that incorporate both software and hardware features in a single, physical component. The system designer is not required to pre-configure these components into the application. The act of physically inserting the components into the system bus and applying power causes their presence and their capability to be known to the other components of the system. This separates what is required to build such modules, (i.e., a skilled knowledge of microprocessor hardware and software) from what is required to configure and use them in an application (i.e., little more than the knowledge of the application itself).
One type of functional module that can be developed is a "user interface" that will connect to a keyboard/display terminal (a teletype or some other device that will provide an interactive user interface). This module can contain software to implement a "user friendly" dialogue that will permit a user without specialist computer experience to instruct the system to carryout his basic wishes. This interface might use, for example, the BASIC language or it might be an application-specific interface designed for implementing process control, the building of graphic displays, robot controls, etc.
The set of functions available to a user are dynmatically defined by the set of modules that are plugged into the system bus. Some of these modules may implement "pure processing" functions, e.g., calculation, text manipulation. Others may interact physically with the outside world, e.g., turning ON or OFF motors, controlling a domestic heating system, or an industrial robot, or providing printed, graphically displayed or speech output. The system can be changed by plugging or unplugging the modules at will. Obviously, however, changing the set of boards would normally require that the system be redesigned in terms of either software or hardware. However, this system can be constructed to perform more complex tasks by adding modules. Previously, this reconfiguration required not only the physically plugging in of the modules, but also some action, such as setting switches, changing the configuration table for the system (in software), (or in the case of a computer system), executing a system generator configurator (SYSGEN) utility program. This is a separate activity from the physical act of connecting the modules together and usually requires special development tools or a specialist with the knowledge of the technology used to implement the modules or else the intervention of a specialist, consultant or agency. This invention provides, however, a means by which function modules which are simply plugged together in any combination can self-configure themselves. Systems can thus be constructed by assembling the parts and fitting them together without any knowledge beyond what is required to use the system.